package com.atguigu.gulimall.product;

import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.core.injector.ISqlInjector;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 1、整合MyBatis-Plus
 *  1）导入依赖
 *  <dependency>
 *      <groupId>com.baomidou</groupId>
 *      <artifactId>mybatis-plus-boot-starter</artifactId>
 *      <version>3.2.0</version>
 *  </dependency>
 *  2）配置
 *      1、配置数据源
 *          1）导入数据库驱动
 *          2）在application.yml配置数据源相关信息
 *      2、配置MyBatis-Plus
 *          1）使用@MapperScan扫描dao
 *          2）告诉MyBatis-Plus,sql映射文件位置
 * 2、mybatis-plus的逻辑删除
 *  1）配置全局的逻辑删除规则(可省略)
 *  2）配置逻辑删除的组件Bean(可省略)
 *  3）给Bean的属性字段加上逻辑删除注解@TableLogic
 *      使用自带的方法删除和查找都会附带逻辑删除逇功能，自己写的xml不会
 * 3、JSR303
 *  1）给Bean添加校验注解：javax.validation.constraints ，并定义自己的message提示消息
 *  2）在传过来的对象前面添加注解 开启校验功能 @Valid。校验错误之后会有默认的响应
 *  3）给校验的bean后及你跟一个BindingResult。就可以获取到校验的结果
 */
//1）配置全局的逻辑删除规则(可省略)
//mybatis-plus:
//        mapper-locations: classpath:/mapper/**/*.xml
//        global-config:
//        db-config:
//        id-type: auto
//        logic-delete-value: 1
//        logic-not-delete-value: 0
//2）配置逻辑删除的组件Bean(可省略)3.1.1版本之后可省略
//@Configuration
//public class MyBatisPlusConfiguration{
//    @Bean
//    public ISqlInjector sqlInjector(){
//        return new LogicSqlInjector();
//    }
//}
//3）给Bean的属性字段加上逻辑删除注解@TableLogic
// 是否显示[0-不显示，1显示]
// value:默认逻辑未删除值，可不写，会自动获取全局配置
// delval：默认逻辑删除值，可不写，会自动获取全局配置
//@TableLogic(value = "1",delval = "0")
@MapperScan("com.atguigu.gulimall.product.dao")
@EnableDiscoveryClient
@SpringBootApplication
public class GulimallProductApplication {

    public static void main(String[] args) {
        SpringApplication.run(GulimallProductApplication.class, args);
    }

}

